package com.microservice.base.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.microservice.base.dto.TreeviewPositionDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 教师档案信息
 *
 * @author zq
 * @email 513973172@qq.com
 * @date 2018-08-27 11:50:47
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InfoTeacher implements Serializable {
    private static final long serialVersionUID = 1L;

    //主键
    @Length(min = 0, max = 36)
    @ApiModelProperty(value = "主键", notes = "主键", allowEmptyValue = false, required = false)
    private String id;
    //学校编码
    @NotBlank
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "学校编码", notes = "学校编码", allowEmptyValue = false, required = false, example = "1111111111")
    private String schoolCode;
    //头像
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "头像", notes = "头像", allowEmptyValue = false, required = false)
    private String avatar;
    //教工编号
    @NotBlank
    @Length(min = 0, max = 25)
    @ApiModelProperty(value = "教工编号", notes = "教工编号", example = "987654", reference = "987654", allowEmptyValue = false, required = false)
    private String teacherCode;
    //职工编号
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "职工编号", notes = "职工编号", example = "98765", reference = "98765", allowEmptyValue = false, required = false)
    private String teacherNo;
    //姓名
    @NotBlank
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "姓名", notes = "姓名", example = "测试老师", reference = "测试老师", allowEmptyValue = false, required = false)
    private String name;
    //name汉字首字母
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "name汉字首字母", notes = "name汉字首字母", allowEmptyValue = false, required = false)
    private String shortCode;
    //花名
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "花名", notes = "花名", example = "csls", allowEmptyValue = false, required = false)
    private String nickName;
    //性别
    @Length(min = 0, max = 5)
    @ApiModelProperty(value = "性别", notes = "性别", example = "男", reference = "男", allowEmptyValue = false, required = false)
    private String sex;
    //民族
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "民族", notes = "民族", example = "汉族", allowEmptyValue = false, required = false)
    private String nation;
    //出生日期
    @ApiModelProperty(value = "出生日期", notes = "出生日期", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;

    //政治面貌
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "政治面貌", notes = "政治面貌", allowEmptyValue = false, required = false)
    private String politicalStatus;
    //身份证号
    @NotBlank
    @Length(min = 0, max = 25)
    @ApiModelProperty(value = "身份证号", notes = "身份证号", example = "362321197009041399", reference = "362321197009041399", allowEmptyValue = false, required = false)
    private String idNo;
    //身份证有效期（年月日or永久）
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "身份证有效期（年月日or永久）", example = "永久", reference = "永久", notes = "身份证有效期（年月日or永久）", allowEmptyValue = false, required = false)
    private String idValidity;
    //户口性质 数据字典
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "户口性质 数据字典", notes = "户口性质 数据字典", example = "城镇户口", allowEmptyValue = false, required = false)
    private String accNature;
    //户口所在地
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "户口所在地", notes = "户口所在地", allowEmptyValue = false, required = false)
    private String idAdress;
    //初始学历
    @Length(min = 0, max = 25)
    @ApiModelProperty(value = "初始学历", notes = "初始学历", allowEmptyValue = false, required = false)
    private String startEducation;
    //初始毕业学校
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "初始毕业学校", notes = "初始毕业学校", allowEmptyValue = false, required = false)
    private String startgraduateSchool;
    //初始毕业时间
    @ApiModelProperty(value = "初始毕业时间", notes = "初始毕业时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startgraduateTime;

    //最高学历
    @Length(min = 0, max = 25)
    @ApiModelProperty(value = "最高学历", notes = "最高学历", allowEmptyValue = false, required = false)
    private String endEducation;
    //最终毕业时间
    @ApiModelProperty(value = "最终毕业时间", notes = "最终毕业时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endgraduateTime;

    //最终毕业学校
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "最终毕业学校", notes = "最终毕业学校", allowEmptyValue = false, required = false)
    private String endgraduateSchool;
    //最终学位
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "最终学位", notes = "最终学位", allowEmptyValue = false, required = false)
    private String endDegree;
    //初始学位
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "初始学位", notes = "初始学位", allowEmptyValue = false, required = false)
    private String startDegree;
    //手机号码
    @Length(min = 0, max = 11)
    @ApiModelProperty(value = "手机号码", notes = "手机号码", allowEmptyValue = false, required = false)
    private String phoneTel;
    //通讯住址
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "通讯住址", notes = "通讯住址", allowEmptyValue = false, required = false)
    private String contactAddress;
    //邮箱
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "邮箱", notes = "邮箱", allowEmptyValue = false, required = false)
    private String email;
    //离职时间
    @ApiModelProperty(value = "参加工作时间", notes = "参加工作时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date joinjobTime;

    //來学校时间
    @ApiModelProperty(value = "來学校时间", notes = "來学校时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date joinschoolTime;

    //编制类型
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "编制类型", notes = "编制类型", allowEmptyValue = false, required = false)
    private String authorizedType;
    //现职称
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "现职称", notes = "现职称", allowEmptyValue = false, required = false)
    private String jobTitle;
    //现职称任职时间
    @ApiModelProperty(value = "现职称任职时间", notes = "现职称任职时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date jobTime;

    //校内职称
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "校内职称", notes = "校内职称", allowEmptyValue = false, required = false)
    private String schoolJobTitle;
    //校内职称任职时间
    @ApiModelProperty(value = "校内职称任职时间", notes = "校内职称任职时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date schoolJobTime;

    //特级教师（0：不是，1：是）
    @Length(min = 0, max = 25)
    @ApiModelProperty(value = "特级教师（0：不是，1：是）", notes = "特级教师（0：不是，1：是）", allowEmptyValue = false, required = false)
    private String superfineTeacher;
    //政府荣誉称号
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "政府荣誉称号", notes = "政府荣誉称号", allowEmptyValue = false, required = false)
    private String governmentHonor;
    //教师荣誉称号
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "教师荣誉称号", notes = "教师荣誉称号", allowEmptyValue = false, required = false)
    private String teacherHonor;
    //校内教师荣誉称号
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "校内教师荣誉称号", notes = "校内教师荣誉称号", allowEmptyValue = false, required = false)
    private String schoolHonor;
    //岗位
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "岗位", notes = "岗位", allowEmptyValue = false, required = false)
    private String post;
    //学科
    @Length(min = 0, max = 25)
    @ApiModelProperty(value = "学科", notes = "学科", allowEmptyValue = false, required = false)
    private String subject;
    //教育教学专家委员会成员(0:不是，1：是)
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "教育教学专家委员会成员(0:不是，1：是)", notes = "教育教学专家委员会成员(0:不是，1：是)", allowEmptyValue = false, required = false)
    private String specialistMember;
    //班主任（0：不是，1:是）
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "班主任（0：不是，1:是）", notes = "班主任（0：不是，1:是）", example = "0", allowEmptyValue = false, required = false)
    private String classteacher;
    //班主任级别
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "班主任级别", notes = "班主任级别", allowEmptyValue = false, required = false)
    private String classteacherRank;
    //副班主任（0：不是，1：是）
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "副班主任（0：不是，1：是）", notes = "副班主任（0：不是，1：是）", example = "0", allowEmptyValue = false, required = false)
    private String deputyClassteacher;
    //工作状态(0:在职，1：见习，2：退休，3：挂职，4：调离，5：离岗，6：辞退，7：辞退)
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "工作状态(0:在职，1：见习，2：退休，3：挂职，4：调离，5：离岗，6：辞退，)", notes = "工作状态(0:在职，1：见习，2：退休，3：挂职，4：调离，5：离岗，6：辞退，7：辞退)", allowEmptyValue = false, required = false)
    private String workStatus;
    //是否审核
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "是否审核", notes = "是否审核", allowEmptyValue = false, required = false)
    private String auditType;
    // 状态
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = " 状态", notes = " 状态", allowEmptyValue = false, required = false)
    private String status;
    //备注
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "备注", notes = "备注", allowEmptyValue = false, required = false)
    private String remarks;
    //删除（0：正常，1：删除）
    @Length(min = 0, max = 1)
    @ApiModelProperty(value = "删除（0：正常，1：删除）", notes = "删除（0：正常，1：删除）", allowEmptyValue = false, required = false)
    private String deleted;
    //创建者
    @Length(min = 0, max = 36)
    @ApiModelProperty(value = "创建者", notes = "创建者", allowEmptyValue = false, required = false)
    private String createUser;
    //创建时间
    @ApiModelProperty(value = "创建时间", notes = "创建时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    //更新人
    @Length(min = 0, max = 36)
    @ApiModelProperty(value = "更新人", notes = "更新人", allowEmptyValue = false, required = false)
    private String updateUser;
    //更新时间
    @ApiModelProperty(value = "更新时间", notes = "更新时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    //更新标志位
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "更新标志位", notes = "更新标志位", allowEmptyValue = false, required = false)
    private String syncFlag;
    //一卡通号
    private String icardNo;
    private List<TreeviewPositionDto> treeviewPositionDtoList;
    private String openId;
    private String treeviewId;
    private String oldTreeviewId;
}
